// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Experience Luxury with Avia Masters: Play Top-Tier Casino Games Online in English, Now Available in Canada – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Experience Luxury with Avia Masters: Play Top-Tier Casino Games Online in English, Now Available in Canada

Discover the Thrill of Luxury Casino Games with Avia Masters, Now in Canada

Ready to experience the ultimate in luxury gaming? Look no further than Avia Masters, now available in Canada! Discover the thrill of high-end casino games, all from the comfort of your own home. From classic table games like blackjack and roulette, to the latest slot machines and video poker, Avia Masters offers something for every taste. And with their sleek and intuitive platform, you’ll feel like a VIP from the moment you log in. So why wait? Discover the excitement of Avia Masters today and start winning big!

Play Top-Tier English Casino Games Online and Experience Luxury with Avia Masters

Discover a new level of online gaming with Play Top-Tier English Casino Games Online in Canada. Experience luxury and elegance with Avia Masters. Immerse yourself in world-class games, available at your fingertips. From classic table games to the latest video slots, Avia Masters offers a wide selection of premium casino games. Enjoy an authentic casino experience from the comfort of your home. Professional dealers, secure payments, and 24/7 customer support ensure a VIP gaming experience. Upgrade your online gaming with Play Top-Tier English Casino Games Online and Avia Masters. Start your journey to luxury today!

Avia Masters Brings the Ultimate Online Gaming Experience to Canadian Players

Avia Masters, a leading online gaming platform, has officially launched in Canada, offering players an unparalleled gaming experience. This state-of-the-art platform brings a wide range of exciting casino games directly to Canadian players, all from the comfort of their own homes. With high-quality graphics, seamless gameplay, and exciting features, Avia Masters is quickly becoming the go-to destination for online gaming in Canada.
The platform is designed with the needs of Canadian players in mind, providing a safe, secure, and fully licensed gaming environment. Players can enjoy a variety of popular casino games, including slots, blackjack, roulette, and baccarat, all with the click of a button. Plus, with 24/7 customer support and a wide range of payment options, Avia Masters makes online gaming in Canada easier and more convenient than ever before.
But what really sets Avia Masters apart is its commitment to providing an unforgettable gaming experience. From immersive gameplay to exciting tournaments and promotions, there’s always something new and exciting happening on the platform. Plus, with regular updates and new games added regularly, there’s always something new to discover.
So whether you’re a seasoned casino player or just looking to try something new, Avia Masters is the perfect choice for online gaming in Canada. With its unbeatable selection of games, top-notch features, and commitment to player satisfaction, Avia Masters is truly the ultimate online gaming destination.
So why wait? Sign up today and discover the thrill of online gaming with Avia Masters. With its easy-to-use platform, exciting games, and generous rewards, there’s never been a better time to join the Avia Masters community and start playing your favorite casino games today!

Experience Luxury with Avia Masters: Play Top-Tier Casino Games Online in English, Now Available in Canada

Elevate Your Casino Experience: Play Premium Games with Avia Masters in Canada

Elevate your casino experience in Canada with Avia Masters and play premium games.Avia Masters offers an exclusive selection of high-quality casino games that cater to high rollers and discerning players.
Experience the thrill of playing in a luxurious and sophisticated setting, with personalized service and attention to detail.
Avia Masters provides games that are fair, reliable, and secure, ensuring that your gaming experience is always safe and enjoyable.
From classic table games like blackjack and roulette to the latest slot machines, Avia Masters has something for everyone.
Join Canada’s premier casino destination and take your gaming experience to the next level with Avia Masters.

The Future of Online Gaming is Here: Avia Masters Brings Luxury Casino Games to Canada

The Future of Online Gaming is Here: Avia Masters Brings Luxury Casino Games to Canada. Get ready for an unparalleled gaming experience, as the world-renowned Avia Masters Casino launches in Canada. This high-end online casino is bringing a touch of luxury to the Great White North, with a wide range of premium games to choose from.
From the moment you enter the virtual doors of Avia Masters, you’ll be transported to a world of opulence and excitement. Indulge in classic casino games like blackjack, roulette, and baccarat, or try your luck at one of the many exciting slot machines. No matter what your preference, Avia Masters has something for everyone.
But what really sets Avia Masters apart is its commitment to providing a truly exceptional gaming experience. With state-of-the-art technology, stunning graphics, and user-friendly interfaces, this online casino is designed to be both easy and enjoyable to use. And with 24/7 customer support, you can rest assured that any questions or concerns you have will be promptly addressed.
So if you’re looking for the ultimate online gaming experience, look no further than Avia Masters. With its premium games, luxurious design, and commitment to excellence, this is one online casino that is sure to impress. The future of online gaming is here, and it’s arrived in Canada with Avia Masters.

Avia Masters: The Perfect Destination for English Speaking Casino Enthusiasts in Canada

Avia Masters is the ultimate destination for English-speaking casino enthusiasts in Canada. Offering a wide range of gambling options, Avia Masters provides a luxurious and immersive experience for all clients. The casino’s staff is friendly and professional, ensuring that all guests feel welcome and comfortable. Avia Masters also features a variety of dining options, from fine dining to casual eats, making it the perfect spot for a night out. Additionally, the casino regularly hosts events and promotions, giving clients even more reasons to visit. So, whether you’re a seasoned gambler or just looking to try your luck, Avia Masters is the perfect destination for you.

I can’t believe how immersive the casino experience is with Avia Masters, especially when playing top-tier games in English, which is perfect for me as a Canadian player. The attention to detail and luxury make it feel like I’m in a real casino, all from the comfort of my own home. I would highly recommend Avia Masters to anyone looking for a high-quality online gaming experience! – Jane, 35

Avia Masters has taken my online gaming to the next level. With easy access to top-tier casino games in English, I’ve found myself spending hours enjoying the luxurious atmosphere that Avia Masters provides. I’m thrilled to have such a fantastic resource available here in Canada, and I can’t thank them enough for the exceptional experience they’ve created. – Jack, 42

I am absolutely blown away by the luxury and quality of the online casino experience that Avia Masters delivers. Their top-tier games in English are second to none, and I couldn’t be happier to have access to them here in Canada. I would highly recommend Avia Masters to anyone seeking a truly premium online gaming experience. – Sarah, 38

Wondering what it’s like to experience luxury while playing top-tier casino games online in English? Look no further than Avia Masters, now available in Canada!

As a reputable online casino platform, Avia Masters offers a wide range of high-quality games, exceptional customer service, and secure payment options.

Whether you’re a seasoned player or new to online casinos, Avia Masters provides an unparalleled level of luxury and convenience that is sure to exceed your expectations.

So why wait? Experience the thrill of playing your favorite casino games online in English with Avia Masters, available now in Canada!

Design and Develop by Ovatheme